#include <stdio.h>

#include "lista.h"

void sprawdzLista_Int_DodawanieUsuwaniePo1() {
  Lista li;
  ListaInicjalizacja(&li);

  ListaDodajOstatniInt(&li, 10, "a");
  //printf("%d\n", li.pFirst->tw.w.i);
  printf("Wydruk listy 1-elementowej\n");
  ListaDrukuj(&li);
  printf("Usuwam ostatni\n");
  ListaUsunOstatni(&li);
  printf("Wydruk listy 0-elementowej\n");
  ListaDrukuj(&li);
  
  ListaDodajOstatniInt(&li, 2, "x1");
  ListaDodajOstatniInt(&li, 4, "x2");
  ListaDodajOstatniInt(&li, 6, "x3");
  printf("Wydruk listy 3-elementowej\n");
  ListaDrukuj(&li);
  printf("Usuwam ostatni\n");
  ListaUsunOstatni(&li);
  printf("Wydruk listy 2-elementowej\n");
  ListaDrukuj(&li);
  printf("Usuwam ostatni \n");
  ListaUsunOstatni(&li);
  printf("Wydruk listy 1-elementowej\n");
  ListaDrukuj(&li);
  printf("Usuwam ostatni\n");
  ListaUsunOstatni(&li);
  printf("Wydruk listy 0-elementowej\n");
  ListaDrukuj(&li);
  
  // próba usunięcia z pustej
  printf("Usuwam ostatni\n");
  ListaUsunOstatni(&li);
}

void sprawdzLista_Int_UsuwanieWszystkich() {
  Lista li;
  
  ListaInicjalizacja(&li);
  ListaDodajOstatniInt(&li, 1, "x1");
  ListaDodajOstatniInt(&li, 5, "x2");
  ListaDodajOstatniInt(&li, -9, "x3");
  ListaDrukuj(&li);
  ListaUsunWszystkie(&li);
}

void sprawdzLista_Float() {
  Lista li;
  
  ListaInicjalizacja(&li);
  ListaDodajOstatniInt(&li, 1, "i1");
  ListaDodajOstatniFloat(&li, -4, "f2");
  ListaDodajOstatniFloat(&li, 0.125, "f3");
  ListaDrukuj(&li);
  ListaUsunWszystkie(&li);
}

int main(void) {  
  sprawdzLista_Int_DodawanieUsuwaniePo1();
  sprawdzLista_Int_UsuwanieWszystkich();
	sprawdzLista_Float();
  return 0;
}